// 题意：给定一个一维坐标轴以及x1, x2, p, 初始在0, 一次可以向左向右跳x1或x2，
//       问是否可以在第k步跳到p，可行给出任意一组解。
//
// 题解: 相当于解一个二元线性方程，先解出能否到p，可以的情况下，如果步数比
//       k小，可以选某一个来回跳补到k（根据奇偶关系）。这里细节要注意。
//
// run: $exec < bfdiff.in
#include <iostream>
#include <cmath>

typedef long long value_type;

value_type x1, x2, p, k;
value_type n1, p1, n2, p2;

value_type extended_gcd(value_type a, value_type b, value_type & x, value_type & y)
{
	if (!b) { x = 1; y = 0; return a; }
	value_type e_gcd = extended_gcd(b, a % b, y, x);
	y -= x * (a/b);
	return e_gcd;
}

void init(value_type a, value_type b)
{
	p1 = n1 = p2 = n2 = 0;
	(a > 0) ? (p1 = a) : (n1 = -a);
	(b > 0) ? (p2 = b) : (n2 = -b);
}

void fill_to_k(value_type a, value_type b)
{
	init(a, b);
	value_type tk = k - std::abs(a) - std::abs(b);
	n1 += tk / 2;  p1 += tk / 2;
}

bool solve(value_type a, value_type b, value_type t1, value_type t2)
	// judge for given a and b, if there are (p1, n1, p2, n2) avaliable.
{
	value_type tk = k - std::abs(a) - std::abs(b);
	if (tk < 0) return false;
	if (!(tk & 1)) {
		init(a, b);
		n1 += tk/2; p1 += tk/2;
	} else {
		if (!((t1 & 1) ^ (t2 & 1))) return false;
		if (std::abs(a + t2) + std::abs(b - t1) > k) {
			if (std::abs(a - t2) + std::abs(b + t1) > k) return false;
			fill_to_k(a - t2, b + t1);
		} else
			fill_to_k(a + t2, b - t1);
	}
	return true;
}

int main()
{
	std::cin >> x1 >> x2 >> p >> k;
	bool no_solution = true;
	value_type a, b;
	value_type d = extended_gcd(x1, x2, a, b);
	if (!(p % d)) {
		value_type tx1 = x1 / d, tx2 = x2 / d;
		a *= p / d; b *= p / d;
		value_type ta = ((a % tx2) + tx2) % tx2;
		value_type tt = (ta - a) / tx2;
		value_type tb = b - tt * tx1;
		if (solve(ta, tb, tx1, tx2))
			no_solution = false;
		else
		if (solve(ta - tx2, tb + tx1, tx1, tx2))
			no_solution = false;
		else {
			tb = ((b % tx1) + tx1) % tx1;
			tt = (b - tb) / tx1;
			ta = a + tt * tx2;
			if (solve(ta, tb, tx1, tx2))
				no_solution = false;
			else
				no_solution = !solve(ta + tx2, tb - tx1, tx1, tx2);
		}
	}

	if (no_solution)
		std::cout << "NO\n";
	else
		std::cout << "YES\n" << p1 << ' ' << n1 << ' ' << p2 << ' ' << n2 << '\n';
}

